package com.service.system.impl;

import com.dao.system.ModuleDao;
import com.domain.system.Module;
import com.domain.system.User;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.service.system.ModuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.UUID;

@Service
public class ModuleServiceImpl implements ModuleService {

    @Autowired
    private ModuleDao moduleDao;

    @Override
    public PageInfo findAll(Integer page, Integer size) {
        PageHelper.startPage(page, size);
        List<Module> list = moduleDao.findAll();
        return new PageInfo(list);
    }

    @Override
    public Integer save(Module module) {
        module.setId(UUID.randomUUID().toString());
        return moduleDao.save(module);
    }

    @Override
    public Integer update(Module module) {
        return moduleDao.update(module);
    }

    @Override
    public Module findById(String id) {
        return moduleDao.findById(id);
    }

    @Override
    public Integer delete(String id) {
        return moduleDao.delete(id);
    }

    @Override
    public List<Module> findAll() {
        return moduleDao.findAll();
    }

    @Override
    //遍历修改权限
    public Integer updateRoleModule(String roleId, String moduleIds) {
        //1、通过roleId进行删除中间表
        moduleDao.deleteByRoleId(roleId);

        //2、把moduleIds转化为数组
        String[] modules = moduleIds.split(",");

        //3、循环数组
        for (String moduleId : modules) {
            //4、写入到中间表
            moduleDao.insertRoleModule(roleId, moduleId);
        }
        return null;
    }

    @Override
    public List<Module> findByRoleId(String roleId) {
        return moduleDao.findByRoleId(roleId);
    }

    @Override
    public List<Module> findByUser(User user) {
        //判断登录的User属于哪种 角色
        Integer degree = user.getDegree();
        //saas管理员
        if (degree == 0) {
            return moduleDao.findByBelong(0);
        }else if(degree == 1){
            return moduleDao.findByBelong(1);
        }else{
            return moduleDao.findByUserId(user.getId());
        }
    }
}
